import subprocess
import sys
import time
def main(forSTT=False):
    # 录音命令，录制到 /opt/opi_test/USBAudio/audio.pcm
    # 当程序检测到 "over" 后，表示录音结束
    
    print("2s后开始录音，输入over结束")
    # 启动录音的外部进程
    record_process = subprocess.Popen(
        ["/opt/opi_test/USBAudio/main", "plughw:0"],
        stderr=subprocess.PIPE
    )

    # 等待用户输入 "over" 来停止录音
    for line in sys.stdin:
        if "over" in line.strip().lower():
            # 停止录音
            record_process.terminate()
            print("录音结束。")
            break
    outsamp=16000 if forSTT else 48000
    subprocess.run([
    "ffmpeg",
    # ---------- 输入端 ----------
    "-f", "s16le",            # 指定输入为原始 PCM 格式
    "-ar", "44100",           # 输入文件的采样率
    "-ac", "2",               # 输入文件的声道数
    "-i", "audio.pcm",
    # ---------- 转换处理 ----------
    "-ar", str(outsamp),           # 转换后的采样率为 48k
    "-ac", "1",               # 转换后的声道数为 mono（单声道）
    "-filter:a", "volume=0.01",# 将音量降至原先的 10%
    # ---------- 输出端 ----------
    "-f", "s16le",            # 输出为 s16le (16位小端序 PCM)
    "-y",                     # 覆盖同名文件
    "recorded.pcm"
    ])
    print("转码完成。")

    # 播放转码后生成的音频
    if not forSTT:
        subprocess.run([
            "/opt/opi_test/audio/sample_audio",
            "play",
            "2",
            "recorded.pcm"
        ])

        print("播放结束。")


if __name__ == "__main__":
    main(False)
